package view;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import entity.ChargeRule;
import main.Main;
import util.Constants;
import util.TableData;
import util.TableUtil;

public class ChargeRuleJPanel extends JPanel {
	private static final long serialVersionUID = -825374946412406485L;
	
	private JTable table;
	private TableData tableData;

	public ChargeRuleJPanel() {
		setLayout(new BorderLayout());
		setBorder(BorderFactory.createTitledBorder("收费规则"));
		initTopPanel();
		initTablePanel();
	}

	private void initTopPanel() {
		JPanel topPanel = new JPanel();
		topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));

		JPanel searchPnl = new JPanel();
		searchPnl.setLayout(new BoxLayout(searchPnl, BoxLayout.X_AXIS));

		JPanel inputPnl = new JPanel();
		inputPnl.setLayout(null);

		JLabel lab1 = new JLabel("名称", SwingConstants.RIGHT);
		lab1.setFont(Constants.font);
		lab1.setBounds(0, 0, 60, 30);

		JTextField lab1input = new JTextField();
		lab1input.setBounds(65, 0, 120, 30);

		inputPnl.add(lab1);
		inputPnl.add(lab1input);

		JPanel btnBar = new JPanel();
		btnBar.setLayout(new BoxLayout(btnBar, BoxLayout.Y_AXIS));

		JButton queryBtn = new JButton("查询");
		queryBtn.setFont(Constants.font);
		queryBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String lab1inputStr = lab1input.getText().trim();
				String[] params = { lab1inputStr };
				refreshTable(params);
			}
		});

		JButton resetBtn = new JButton("重置");
		resetBtn.setFont(Constants.font);
		resetBtn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				lab1input.setText("");
			}
		});

		btnBar.add(queryBtn);
		btnBar.add(resetBtn);

		searchPnl.add(inputPnl);
		searchPnl.add(btnBar);

		JPanel toolBar = new JPanel();
		toolBar.setLayout(new BoxLayout(toolBar, BoxLayout.X_AXIS));

		JButton btn1 = new JButton("添加");
		btn1.setFont(Constants.font);
		btn1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				JDialog dlg = new JDialog(Main.frame, "添加规则", true);
//				dlg.setBounds(300, 200, 450, 450);
				dlg.setSize(450, 450);
				dlg.setLocationRelativeTo(null);
				dlg.add(new AddChargeRuleJPanel());
				dlg.validate();
				dlg.setVisible(true);
			}
		});

		toolBar.add(btn1);
		toolBar.add(Box.createHorizontalGlue());

		topPanel.add(searchPnl);
		topPanel.add(toolBar);
		add(topPanel, BorderLayout.NORTH);
	}

	private void initTablePanel() {
		String columns[] = { "编号", "名称", "类型", "时费用", "月费用", "生效日期", "创建时间"};
		List<String[]> rows = new ArrayList<>();
		tableData = new TableData(columns, rows);
		table = new JTable(tableData);
		TableUtil.setTableStyle(table);
		JScrollPane jsPane = new JScrollPane(table);
		TableUtil.setJspStyle(jsPane);
		add(jsPane, BorderLayout.CENTER);
	}

	public void refreshTable(String[] params) {
		ChargeRule chargeRule = new ChargeRule();
		List<String[]> rows = chargeRule.query(params);
		tableData.refresh(rows);
	}

}
